如何得到动画帧数,控制unity动画播放 您所在的位置:网站首页 unity 动画播放下一帧 如何得到动画帧数,控制unity动画播放

如何得到动画帧数,控制unity动画播放

2023-10-24 23:58| 来源: 网络整理| 查看: 265

在Unity动画控制中,如何获得当前动画已经播放到的帧呢?其实可以通过 clip.frameRate,clip.length,及normalizedTime来计算出具体的帧。

//当前动画机播放时长 currentTime = anim.GetCurrentAnimatorStateInfo(0).normalizedTime; //动画片段长度 float length = anim.GetCurrentAnimatorClipInfo(0)[0].clip.length; //获取动画片段帧频 float frameRate = anim.GetCurrentAnimatorClipInfo(0)[0].clip.frameRate; //计算动画片段总帧数 float totalFrame = length / (1 / frameRate); //计算当前播放的动画片段运行至哪一帧 int currentFrame = (int)(Mathf.Floor(totalFrame * clipTime) % totalFrame);( clipTime改为currentTime ) Debug.Log(" Frame: " + currentFrame + “/” + totalFrame);

 

 

float Remap(float tex, float min, float max, float slefMin = 0, float slefMax = 1) { return (min + (tex - slefMin) * (max - min) / (slefMax - slefMin)); } IEnumerator OnUpdate() { while (true) { yield return new WaitForEndOfFrame(); //当前动画播放时长 float currentTime = anim.GetCurrentAnimatorStateInfo(0).normalizedTime; //总时长 float length = animLength[SelectType.ToString()].length; //总帧数 length / (1 / tempclip.frameRate) float totalFrame=animLength[SelectType.ToString()].totalFrame; //播放时长映射成帧数 int currentFrame =(int) Remap(currentTime, 0, totalFrame); if (currentFrame >= totalFrame) { break; } } Debug.Log("结束"); GameRoot.Instance.StopCoroutine(OnUpdate()); }

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有